package ar.edu.untref.robotica.tests;

import java.math.BigDecimal;

import org.junit.Assert;
import org.junit.Test;

import ar.edu.untref.robotica.motorfisico.Calculadora;
import ar.edu.untref.robotica.motorfisico.Rueda;

public class TestCalculadora {

	private static final double ERROR_ACEPTABLE = 0.005;

	@Test
	public void getVelocidadDeDesplazamientoMismasVelocidades() {

		BigDecimal velocidadRuedaDerecha = new BigDecimal(2);
		BigDecimal velocidadRuedaIzquierda = new BigDecimal(2);
		Rueda ruedaIzquierda = new Rueda();
		Rueda ruedaDerecha = new Rueda();
		ruedaIzquierda.setVelocidad(velocidadRuedaIzquierda);
		ruedaDerecha.setVelocidad(velocidadRuedaDerecha);
		ruedaIzquierda.setDiametroRueda(10);
		ruedaDerecha.setDiametroRueda(10);
		double velocidadResultante = Calculadora.getVelocidadDesplazamiento(
				velocidadRuedaIzquierda.doubleValue(), velocidadRuedaDerecha.doubleValue());
		Assert.assertEquals(2, velocidadResultante, ERROR_ACEPTABLE);
		Assert.assertEquals(0,
				Calculadora.getCambioAngulo(ruedaIzquierda, ruedaDerecha),
				ERROR_ACEPTABLE);
	}

	@Test
	public void getVelocidadDeDesplazamientoDistintas() {

		double velocidadRuedaDerecha = 3;
		double velocidadRuedaIzquierda = 2;
		double velocidadResultante = Calculadora.getVelocidadDesplazamiento(
				velocidadRuedaIzquierda, velocidadRuedaDerecha);
		Assert.assertEquals(2.5, velocidadResultante, ERROR_ACEPTABLE);
	}

	@Test
	public void getVelocidadDeDesplazamientoOpuestas() {

		double velocidadRuedaDerecha = 3;
		double velocidadRuedaIzquierda = -3;
		double velocidadResultante = Calculadora.getVelocidadDesplazamiento(
				velocidadRuedaIzquierda, velocidadRuedaDerecha);
		Assert.assertEquals(0, velocidadResultante, ERROR_ACEPTABLE);
	}
}
